package com.bshinfo.web.base.model;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 分页实体类<br/>
 * 
 * 功能描述: 对分页的基本数据进行一个简单的封装<BR/>
 * 
 * 〈<BR/>	
 * 	
 *
 * 〉
 *
 * @author 	zhangChao
 * 
 * @see 	[Page<T>]
 * 
 * @since 	[JDK 1.7] 
 * 
 * @version [1.0]
 * 
 * @Date    [2016-12-16 15:21:51]
 */
public class Page<T>
{
	//	页码，默认是第一页  
    private int pageNo = 1; 
    //	每页显示的记录数，默认是15 
    private int pageSize = 10; 
    //	总记录数  
    private int totalRecord;
    //	总页数  
    private int totalPage;
    //	当前信息条数方位
    private int infoNum; 
    //	对应的当前页记录
    private List<T> results;  
    //	其他的参数我们把它分装成一个Map对象  
    private Map<String, Object> params = new HashMap<String, Object>();
   
    public int getInfoNum() {
		return infoNum;
	}

	public void setInfoNum(int infoNum) {
		this.infoNum = infoNum;
	}

	public int getPageNo() {  
       return pageNo;  
    }  
   
    public void setPageNo(int pageNo) {  
       this.pageNo = pageNo;  
    }  
   
    public int getPageSize() {  
       return pageSize;  
    }  
   
    public void setPageSize(int pageSize) {  
       this.pageSize = pageSize;  
    }  
   
    public int getTotalRecord() {  
       return totalRecord;  
    }  
   
    public void setTotalRecord(int totalRecord) 
    {  
       this.totalRecord = totalRecord;  
       //在设置总页数的时候计算出对应的总页数，在下面的三目运算中加法拥有更高的优先级，所以最后可以不加括号。  
       int totalPage = totalRecord%pageSize==0 ? totalRecord/pageSize : totalRecord/pageSize + 1;  
       this.setTotalPage(totalPage);  
       int num = 0;
		if (pageNo == totalPage) 
		{
			    num = totalRecord;
		} 
		else 
		{
		    	num = pageNo * pageSize ;
		}
		this.setInfoNum(num);
    }  
   
    public int getTotalPage() {  
       return totalPage;  
    }  
   
    public void setTotalPage(int totalPage) {  
       this.totalPage = totalPage;  
    }  
   
    public List<T> getResults() {  
       return results;  
    }  
   
    public void setResults(List<T> results) {  
       this.results = results;  
    }  
     
    public Map<String, Object> getParams() {  
       return params;  
    }  
     
    public void setParams(Map<String, Object> params) {  
       this.params = params;  
    }  
   
    @Override  
    public String toString()
    {  
       StringBuilder builder = new StringBuilder();  
       builder.append("Page [pageNo=").append(pageNo).append(", pageSize=")  
              .append(pageSize).append(", results=").append(results).append(  
                     ", totalPage=").append(totalPage).append(  
                     ", totalRecord=").append(totalRecord).append(", infoNum=").append(infoNum).append("]");  
       return builder.toString();  
    }  
}
